home *** CD-ROM | disk | FTP | other *** search
- /* GROUP FILE ROUTINES
-
- */
-
- #ifndef HTGROUP_H
- #define HTGROUP_H
-
- #ifndef HTUTILS_H
- #include "HTUtils.h"
- #endif /* HTUTILS_H */
- #include "HTList.h"
-
- #ifdef SHORT_NAMES
- #define HTAApGrD HTAA_parseGroupDef
- #define HTAArGrR HTAA_resolveGroupReferences
- #define HTAApGrD HTAA_printGroupDef
- #define HTAAGD_d GroupDef_delete
- #define HTAAuIIG HTAA_userAndInetInGroup
- #endif /* SHORT_NAMES */
-
- typedef HTList GroupDefList;
- typedef HTList ItemList;
-
- typedef struct {
- char * group_name;
- ItemList * item_list;
- } GroupDef;
-
-
- /*
- ** Access Authorization failure reasons
- */
- typedef enum {
- HTAA_OK, /* 200 OK */
- HTAA_OK_GATEWAY, /* 200 OK, acting as a gateway */
- HTAA_NO_AUTH, /* 401 Unauthorized, not authenticated */
- HTAA_NOT_MEMBER, /* 401 Unauthorized, not authorized */
- HTAA_IP_MASK, /* 403 Forbidden by IP mask */
- HTAA_BY_RULE, /* 403 Forbidden by rule */
- HTAA_NO_ACL, /* 403 Forbidden, ACL non-existent */
- HTAA_NO_ENTRY, /* 403 Forbidden, no ACL entry */
- HTAA_SETUP_ERROR, /* 403 Forbidden, server setup error */
- HTAA_DOTDOT, /* 403 Forbidden, URL with /../ illegal */
- HTAA_HTBIN, /* 403 Forbidden, /htbin not enabled */
- HTAA_NOT_FOUND /* 404 Not found, or read protected */
- } HTAAFailReasonType;
-
- /*
-
- Group definition grammar
-
- string
- "sequence of alphanumeric characters"
-
- user_name
- string
-
- group_name
- string
-
- group_ref
- group_name
-
- user_def
- user_name | group_ref
-
- user_def_list
- user_def { ',' user_def }
-
- user_part
- user_def | '(' user_def_list ')'
-
- templ
-
- "sequence of alphanumeric characters and '*'s"
-
- ip_number_mask
- templ '.' templ '.' templ '.' templ
-
- domain_name_mask
- templ { '.' templ }
-
- address
-
- ip_number_mask | domain_name_mask
-
- address_def
-
- address
-
- address_def_list
- address_def { ',' address_def }
-
- address_part
- address_def | '(' address_def_list ')'
-
- item
- [user_part] ['@' address_part]
-
- item_list
- item { ',' item }
-
- group_def
- item_list
-
- group_decl
- group_name ':' group_def
-
- PARSE GROUP DEFINITION
-
- */
-
- PUBLIC GroupDef *HTAA_parseGroupDef PARAMS((FILE * fp));
- /*
-
- Fill in Pointers to referenced Group Definitions in a Group Definition
-
- References to groups (by their name) are resolved from group_def_list and pointers to
- those structures are added to group_def.
-
- */
-
- PUBLIC void HTAA_resolveGroupReferences PARAMS((GroupDef * group_def,
- GroupDefList * group_def_list));
- /*
-
- Read Group File (and do caching)
-
- If group file is already in cache returns a pointer to previously read group definition
- list.
-
- */
-
- PUBLIC GroupDefList *HTAA_readGroupFile PARAMS((CONST char * filename));
- /*
-
- Delete Group Definition
-
- Groups in cache should never be freed by this function. This should only be used to
- free group definitions read by HTAA_parseGroupDef.
-
- */
-
- PUBLIC void GroupDef_delete PARAMS((GroupDef * group_def));
- /*
-
- Print Out Group Definition (for trace purposes)
-
- */
-
- PUBLIC void HTAA_printGroupDef PARAMS((GroupDef * group_def));
- /*
-
- Does a User Belong to a Given Set of Groups
-
- This function checks both the username and the internet address.
-
- */
-
- /* PUBLIC HTAA_userAndInetInGroup()
- ** CHECK IF USER BELONGS TO TO A GIVEN GROUP
- ** AND THAT THE CONNECTION COMES FROM AN
- ** ADDRESS THAT IS ALLOWED BY THAT GROUP
- ** ON ENTRY:
- ** group the group definition structure.
- ** username connecting user.
- ** ip_number browser host IP number, optional.
- ** ip_name browser host IP name, optional.
- ** However, one of ip_number or ip_name
- ** must be given.
- ** ON EXIT:
- ** returns HTAA_IP_MASK, if IP address mask was
- ** reason for failing.
- ** HTAA_NOT_MEMBER, if user does not belong
- ** to the group.
- ** HTAA_OK if both IP address and user are ok.
- */
- PUBLIC HTAAFailReasonType HTAA_userAndInetInGroup PARAMS((GroupDef * group,
- char * username,
- char * ip_number,
- char * ip_name));
- /*
-
- */
-
- #endif /* not HTGROUP_H */
- /*
-
- End of file HTGroup.h. */
-